package org.ohuyo.libra.server.dao;

import org.ohuyo.libra.server.model.table.AttributeRecord;
import org.ohuyo.libra.server.model.table.AttributeSubRecord;

/**
 * 
 * @author rabbit
 * 
 */
public interface AttributeDao {
	void saveAttributeRecord(AttributeRecord sessionRecord);

	void updateAttributeRecord(AttributeRecord sessionRecord);

	AttributeRecord getAttributeRecord(long loginTicket, String key,
			String srcAppCode, String targetAppCode, boolean shared,
			boolean disposable);

	AttributeRecord getAttributeRecordWhithLock(long loginTicket, String key,
			String srcAppCode, String targetAppCode, boolean shared,
			boolean disposable);

	void deleteAttributeRecord(AttributeRecord attributeRecord);

	int deleteAttributeRecord(long loginTicket, String key, String appCode);

	int deleteAttributeRecordByLoginTicket(long loginTicket);

	int deleteInvalidAttributeRecord();

	// -----------
	void deleteAttributeSub(AttributeSubRecord attributeSub);

	int deleteAttributeSub(long iAttribute);

	int deleteAttributeSubByLoginTicket(long loginTicket);

	void saveAttributeSub(AttributeSubRecord attributeSub);

	void updateAttributeSub(AttributeSubRecord attributeSub);

	AttributeSubRecord getAttributeSub(long iAttribute);

	int deleteInvalidAttributeSubRecord();
}
